child shell(Sub Shell) & coproc

bash
매개변수
bash -c string # string .
bash -i #
bash -l #
bash -r #
bash -s # .
명령어들을 괄호로 둘러싸게 되면 해당 명령어는 서브 쉘을 통해서 수행된다.
pwd; ls; cd ~; pwd; cd; pwd; ls; echo $BASH_SUBSHELL
(pwd; ls; cd ~; pwd; cd; pwd; ls; echo $BASH_SUBSHELL)
괄호를 이용한 Sub Shell은 쉘 스크립트에서 멀티 프로세싱을 위해 사용되지만,
서브쉘은 처리 속도가 상당히 느린 비싼 비용의 연산이다.

Sub Shell을 프로세스 목록, 코프로세스 및 파이프, 백그라운드 모드 등에 활용할 경우 호율적으로 사용할 수 있다.
Background Mode
sleep 3000&
백그라운드로 작업을 수행했을 때, 두 가지 정보를 리턴한다.
[백그라운드 작업 번호] 백그라운드 작업 PID
ps -f
jobs #
jobs -l
서브 쉘을 백그라운드로 수행
(tar -cf Rich.tar /home/rich; tar -cf My.tar /home/csian)&
Co-processing
코프로세싱은 두 가지 작업을 동시에 수행하는 것을 의미한다.
백그라운드 모드에서 서브쉘을 생성하고, 서브쉘에서 명령을 실행
coproc <command>
coproc COPROC_NAME { <command>; }
ex)
coproc SCHEDULE { sleep 10; }

coproc의 이름은 코프로세스 사이의 통신(정보를 주고 받을 때)만 사용하는 것이 좋다.